/**
 * @description 实时日志打印，本地环境则只打印出来 正式生产环境上传微信小程序后台实时日志
 * @author yinzhi
 * @date 2025-03-06
 * 使用方法：需要在页面按需引入
 * import { logger } from '@/utils/log.js'
 * logger.error('error message')
 */
const isSupportLog = wx.canIUse('getRealtimeLogManager')
const log = isSupportLog ? wx.getRealtimeLogManager() : null
const NODE_ENV = process.env.NODE_ENV || 'development'
/**
 * 生产环境实时日志
 * 本地环境则只打印出来 还可判断只有正式生产环境才让上传
 */
const BOOL = NODE_ENV === 'development'

const print = {
    debug(...args) {
        if (!log) return false
        if (BOOL) {
            console.debug(...args)
            return true
        } else {
            // #ifdef MP-WEIXIN
            log.debug.apply(log, args)
            return true
            // #endif
        }
        return false
    },
    // 只在开发环境打印
    log(...args) {
        if (!log) return false
        if (BOOL) {
            console.log(...args)
            return true
        }
        return false
    },
    info(...args) {
        if (!log) return false
        if (BOOL) {
            console.info(...args)
            return true
        } else {
            // #ifdef MP-WEIXIN
            log.info.apply(log, args)
            return true
            // #endif
        }
        return false
    },
    warn(...args) {
        if (!log) return false
        if (BOOL) {
            console.warn(...args)
            return true
        } else {
            // #ifdef MP-WEIXIN
            log.warn.apply(log, args)
            return true
            // #endif
        }
        return false
    },
    error(...args) {
        if (!log) return false
        if (BOOL) {
            console.error(...args)
            return true
        } else {
            // #ifdef MP-WEIXIN
            log.error.apply(log, args)
            return true
            // #endif
        }
        return false
    },
    setFilterMsg(msg) {
        // #ifdef MP-WEIXIN
        if (typeof log !== 'object' || !log.setFilterMsg || typeof msg !== 'string') return false
        log.setFilterMsg(msg)
        return true
        // #endif
    },
    addFilterMsg(msg) {
        // #ifdef MP-WEIXIN
        if (typeof log !== 'object' || !log.addFilterMsg || typeof msg !== 'string') return false
        log.addFilterMsg(msg)
        return true
        // #endif
    }
}

export const logger = print // 导出独立模块
